package com.ichir.projects.uiflow.definition;

import java.util.List;
import java.util.Map;


/**
 * UI Flow definition, base flow description: views, actions, transitions, ...
 * 
 * @author mahieddine
 * @since 1.0.0
 */
public interface IFlowDefinition {

	/**
	 * @return flow definition id
	 */
	String getId();

	/**
	 * @return flow actions
	 */
	List<? extends IFlowPart> getActions();

	/**
	 * @return flow views
	 */
	List<? extends IFlowPart> getViews();

	/**
	 * @return flow definition starting point
	 */
	IFlowPart getStart();

	/**
	 * @return flow definition end point
	 * @deprecated
	 */
	IFlowPart getEnd();
	
	/**
	 * @return flow definition initial properties
	 */
	Map<String, Object> getProperties();
}
